<!DOCTYPE html>
<html >
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>数组高级</title>
</head>
<body>
    
</body>
<script>
    let scores = [
        {
            name:'A',
            score:66
        },
        {
            name:'B',
            score:77
        },
        {
            name:'C',
            score:54
        },
        {
            name:'D',
            score:79
        },
        {
            name:'E',
            score:87
        }
    ];

    //1.连接数组(concat)
    // let a1 = [1,2,3];
    // let a2 = [7,8,9];
    // let a3 = a2.concat(['a','b'],[4,5,6]);
    // console.log(a3);
    
    //2.(every) 用于测试数组中的元素是否都满足一定的条件
    function jige(student){
        return student.score >=50;
    }
    let ok = scores.every(jige);
    console.log(ok);

    // 3.filter 用于过滤原始数组中的元素
    let lh = scores.filter((s) => {return s.score >= 70});
    console.log(lh);
    console.log(scores);

    //4.数组的遍历
    //4.1 通过for循环遍历
    // for(let i =0;i < scores.length; i++){
    //     console.log(scores[i].name,',',scores[i].score);  
    // }

    // 4.2 for in 循环
    // 注意：这里遍历的是索引号
    // for(let i in scores){
    //     console.log(scores[i].name,',',scores[i].score);  
    // }
    // 4.3 for of 循环
    //   注意：这里遍历的直接是元素对象
    // for(let s of scores){
    //     console.log(s.name,',',s.score);  
    // }
    
    //4.4 通过数组对象的forEach方法遍历
    scores.forEach((s) => console.log(s.name,',',s.score));
    
    //5.some 用于测试数组中的元素，只要有任何一个满足，就返回true，
    //当所有元素都不满足时，就返回false
    let pass = scores.some( s =>s.score >90);
    console.log(pass);
    
    // 6.sort  注意：务必给他传递一个比较函数，否则巨坑
    scores.sort( (a,b) => b.score - a.score );
    console.log(scores);
    
    //7.map 映射，将函数作用在每一个元素上
    scores.map( s => s.score += 5);
    console.log(scores);


    //8.reduce 归约，将数据汇总
     let sss = [1 ,3 ,5,7,9];
     let result=sss.reduce((a,b)  => a + b);
     console.log(result);
     
      
    





</script>
</html>